home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 001 / dosmodem.arc / DTR.ASM < prev    next >
Assembly Source File  |  1986-10-13  |  2KB  |  156 lines

  1. upcase    macro    char
  2.     local    nocvt
  3.  
  4.     ifb    <char>
  5.  
  6.     upcase    al
  7.  
  8.     else
  9.  
  10.     cmp    char,'a'
  11.     jb    nocvt
  12.     cmp    char,'z'
  13.     ja    nocvt
  14.     sub    char,32
  15. nocvt:
  16.     endif
  17.     endm
  18.  
  19.     page    66,132
  20.  
  21. cseg    segment    byte public 'CODE'
  22.     assume    cs:cseg,ds:cseg,es:cseg
  23.     org    100h
  24.  
  25. start    proc    near
  26.     jmp    start1
  27.  
  28.     db    13,'DTR (pd)1985,86 by Donavon Kuhn',13,10,26
  29.  
  30. start1:
  31.     lea    dx,author
  32.     mov    ah,9
  33.     int    21h
  34.  
  35.     mov    bl,0            ;default com port (COM1:)
  36.     mov    si,80h
  37. start2:
  38.     inc    si
  39.     mov    al,[si]            ;space off leading spaces
  40.     cmp    al,' '
  41.     jz    start2
  42.  
  43.     cmp    al,'?'
  44.     jz    errexit
  45.  
  46.     upcase                ;using UPCASE without a parameter
  47.     cmp    al,'C'            ;(defaults to AL)
  48.     jnz    nocom
  49.  
  50.     mov    cl,[si][1]
  51.     upcase    cl            ;using UPCASE using another register
  52.     cmp    cl,'O'
  53.     jnz    nocom
  54.                 
  55.  
  56.     mov    al,[si][2]
  57.     upcase    al            ;using UPCASE with AL as the parm
  58.     cmp    al,'M'
  59.     jnz    nocom
  60.  
  61.     cmp    byte ptr [si][4],':'
  62.     jz    check_port
  63.  
  64. errexit:
  65.     lea    dx,errmsg
  66. errexit1:
  67.     mov    ah,9
  68.     int    21h
  69.  
  70.     mov    ax,4c01h        ;return ERRORLEVEL of 1
  71.     int    21h
  72.  
  73. check_port:
  74.     mov    al,[si][3]        ;get the com number
  75.     sub    al,'1'            ;convert to binary
  76.     cmp    al,3            ;greater than com4?
  77.     ja    errexit
  78.  
  79.     add    si,5
  80.  
  81.     mov    bl,al
  82. nocom:
  83.     xor    bh,bh    
  84.     shl    bl,1
  85.     mov    ax,40h
  86.     mov    ds,ax
  87.     mov    ax,ds:[bx]
  88.     push    cs
  89.     pop    ds
  90.  
  91.     cmp    ax,0
  92.     jnz    comok
  93.  
  94.     lea    dx,ncstr
  95.     jmp    errexit1
  96.  
  97.  
  98. comok:
  99.     mov    dx,ax            ;port in DX
  100.     add    dx,4
  101.     dec    si
  102. start3:
  103.     inc    si
  104.     mov    al,[si]            ;space off leading spaces
  105.     cmp    al,' '            ;after COMx:
  106.     jz    start3
  107.  
  108.     mov    al,[si]
  109.     upcase
  110.     cmp    al,'O'
  111.     jnz    errexit
  112.  
  113.     mov    al,[si][1]
  114.     upcase
  115.  
  116.     cmp    al,'N'
  117.     jnz    noton
  118.  
  119.     in    al,dx
  120.     or    al,3            ;set dtr bit
  121.     out    dx,al
  122.  
  123.     lea    dx,onstr
  124.  
  125. exitok:
  126.     mov    ah,9
  127.     int    21h
  128.  
  129.     mov    ax,4c00h
  130.     int    21h
  131.  
  132. noton:
  133.     cmp    al,'F'
  134.     jnz    notoff
  135.  
  136.     in    al,dx
  137.     and    al,0fch
  138.     out    dx,al
  139.  
  140.     lea    dx,offstr
  141.     jmp    exitok
  142.  
  143. notoff:
  144.     jmp    errexit
  145.  
  146. author    db    'DTR (pd)1985,86 by Donavon Kuhn',13,10,'$'
  147. errmsg    db    'Usage:  DTR [COM1:|COM2:|COM3:|COM4:] ON|OFF',13,10,'$'
  148. onstr    db    'DTR is now ON',13,10,'$'
  149. offstr    db    'DTR is now OFF',13,10,'$'
  150. ncstr    db    'COM port not found',13,10,'$'
  151.  
  152. start    endp
  153.  
  154. cseg    ends
  155.         end    start
  156.